home *** CD-ROM | disk | FTP | other *** search
/ Gamers Delight 2 / Gamers Delight 2.iso / Aminet / game / board / ChessTutor.lha / ChessTutor / chesstutor (.txt) < prev    next >
AmigaBASIC Source Code  |  1989-11-06  |  14KB  |  709 lines

  1. n1=20:n2=40:n3=165
  2. SAVE "chesstutor",b
  3.  
  4. MENU 1,0,1,"checkmate"
  5. MENU 1,1,1,"mate1"
  6. MENU 1,2,1,"mate2a"
  7. MENU 1,3,1,"mate2b"
  8. MENU 1,4,1,"mate3a"
  9. MENU 1,5,1,"mate3b"
  10. MENU 2,0,1,"unstoppablemate
  11. MENU 2,1,1,"unstopmate2"
  12. MENU 2,2,1,"unstopmate3"
  13. MENU 3,0,1,"winmaterial"
  14. MENU 3,1,1,"winmat2a"
  15. MENU 3,2,1,"winmat2b"
  16. MENU 3,3,1,"winmat3a"
  17. MENU 3,4,1,"winmat3b"
  18. MENU 4,0,1,"queening
  19. MENU 4,1,1,"queening2
  20. MENU 4,2,1,"queening3
  21. MENU 5,0,1,"other"
  22. MENU 5,1,1,"mate4a"
  23. MENU 5,2,1,"mate4b"
  24. MENU 5,3,1,"draw"
  25. MENU 5,4,1,"1mover"
  26. MENU 6,0,1,"instructions"
  27. MENU 6,1,1,"instructions"
  28. ON MENU GOSUB menuselect
  29. MENU ON
  30. ON BREAK GOSUB break1
  31. PAINT(1,1),1
  32. COLOR 2,1
  33. LOCATE 7,21
  34. PRINT "THIS IS A SHAREWARE PROGRAM
  35. PRINT  SPC(20)
  36. PRINT "GIVE A COPY TO YOUR FRIENDS!
  37. PRINT 
  38. PRINT  SPC(20)
  39. PRINT "IF YOU ENJOYED IT, SEND $20
  40. PRINT  SPC(20)
  41. PRINT "AND ANY QUESTIONS OR SUGGESTIONS
  42. PRINT  SPC(20)
  43. PRINT " BY CHEQUE OR MONEY ORDER TO W.JORDAN
  44. PRINT  SPC(20)
  45. PRINT "P.O.BOX 136, FITZROY, VIC 3065
  46. PRINT  SPC(20)
  47. PRINT " (AUSTRALIA)
  48. PRINT  SPC(20)
  49. PRINT "PH: (03)417-3521
  50. PRINT 
  51. PRINT  SPC(20)
  52. PRINT "Choose questions from pull-down menu
  53. PRINT 
  54. PRINT  SPC(20)
  55. PRINT "To exit program, click gadget
  56. PRINT SPC(20)
  57. PRINT "In top left corner
  58. ms=1
  59. waitm:
  60. GOTO waitm
  61.  
  62. menuselect:
  63. men=MENU(0):men1=MENU(1)
  64. IF men=1 THEN
  65. IF men1=1 THEN nam$="checkmate1":move=1
  66. IF men1=2 THEN nam$="mate2a":move=1.5
  67. IF men1=3 THEN nam$="mate2b":move=1.5
  68. IF men1=4 THEN nam$="mate3a":move=2
  69. IF men1=5 THEN nam$="mate3b":move=2
  70. GOTO mouse1
  71. END IF
  72. IF men=2 THEN
  73. IF men1=1 THEN nam$="unstop2":move=1.5
  74. IF men1=2 THEN nam$="unstop3":move=2
  75. GOTO mouse1
  76. END IF
  77. IF men=3 THEN
  78. IF men1=1 THEN nam$="winmaterial2":move=1.5
  79. IF men1=2 THEN nam$="hennig":move=1.5
  80. IF men1=3 THEN nam$="winmaterial3a":move=2
  81. IF men1=4 THEN nam$="winmaterial3b":move=2
  82. GOTO mouse1
  83. END IF
  84. IF men=4 THEN
  85. IF men1=1 THEN nam$="queening2":move=1.5
  86. IF men1=2 THEN nam$="queening3":move=2
  87. GOTO mouse1
  88. END IF
  89. IF men=5 THEN
  90. IF men1=1 THEN nam$="4movera":move=2.5
  91. IF men1=2 THEN nam$="4moverb":move=2.5
  92. IF men1=3 THEN nam$="draw":move=1.5
  93. IF men1=4 THEN nam$="1mover":move=1
  94. GOTO mouse1
  95. END IF
  96. IF men=6 THEN
  97. IF men1=1 THEN
  98. RUN "intro"
  99. END IF
  100. END IF
  101. PRINT "That was not a menu item!
  102. GOTO waitm
  103. RETURN
  104.  
  105. mouse1:
  106. wt=move
  107. PAINT(1,1),1
  108. COLOR 2,1
  109. OPEN nam$ FOR INPUT AS 1
  110.  
  111. timer1:
  112. WINDOW 6,"time limit",(150,50)-(475,120),16
  113. PALETTE 0, 0, 0, 0.7
  114. PAINT(1,1),0
  115. COLOR 1,0
  116. timer2:
  117. PRINT "  Choose the time period you want
  118. PRINT "  for attempting a section of questions
  119. PRINT "  (1)-Lightning -5 minutes
  120. PRINT "  (2)-Skittles -15 minutes
  121. PRINT "  (3)-Allegro -30 minutes
  122. PRINT "  (4)-Tournament -90 minutes
  123. PRINT "  (5)-Correspondence -300 minutes
  124. INPUT"    A number(1-5)";tim
  125. IF tim=1 THEN min=5
  126. IF tim=2 THEN min=15
  127. IF tim=3 THEN min=30
  128. IF tim=4 THEN min=90
  129. IF tim=5 THEN min=300
  130. IF tim<1 OR tim>5 THEN
  131. PRINT "Number must be between 1 and 5
  132. tim=0:CLS
  133. GOTO timer2
  134. END IF
  135. WINDOW CLOSE 6
  136. x=min*60
  137. TIMER ON
  138. ON TIMER(x) GOSUB rating
  139. IF tim1=1 THEN fin
  140. MENU OFF
  141. l1=40:l2=20:l3=240:l4=320
  142. PALETTE 0, 0, 0.5, 0
  143. GOTO drawpieces
  144.  
  145. chessboard:
  146. WINDOW OUTPUT 2
  147. CLS
  148. LINE (60,5)-(100,25),3,bf
  149. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  150. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  151. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  152.  
  153. LINE STEP(-l3,0)-STEP(l1,l2),3,bf
  154. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  155. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  156. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  157.  
  158. LINE STEP(-l4,0)-STEP(l1,l2),3,bf
  159. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  160. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  161. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  162.  
  163. LINE STEP(-l3,0)-STEP(l1,l2),3,bf
  164. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  165. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  166. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  167.  
  168. LINE STEP(-l4,0)-STEP(l1,l2),3,bf
  169. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  170. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  171. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  172.  
  173. LINE STEP(-l3,0)-STEP(l1,l2),3,bf
  174. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  175. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  176. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  177.  
  178. LINE STEP(-l4,0)-STEP(l1,l2),3,bf
  179. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf  
  180. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  181. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  182.  
  183. LINE STEP(-l3,0)-STEP(l1,l2),3,bf
  184. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  185. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  186. LINE STEP(l1,-l2)-STEP(l1,l2),3,bf
  187.  
  188. LINE STEP(0,0)-STEP(0,-160),1
  189. LINE STEP(0,0)-STEP(-l4,0),1
  190. LINE STEP(0,0)-STEP(0,160),1
  191. LINE STEP(0,0)-STEP(l4,0),1
  192. LINE STEP(225,5)-STEP(l4,160),2,b
  193. LINE STEP(100,5)-STEP(l4,160),3,bf
  194. GOTO newquestion
  195.  
  196. drawpieces:
  197. CLS
  198. WINDOW 2,"Chessboard",(150,0)-(617,185),16
  199. PAINT(1,1),0
  200. WINDOW 3,"Text",(0,100)-(135,185),16
  201. PAINT(1,1),1
  202. COLOR 2,1
  203. WINDOW 4,"Score",(0,0)-(135,85),16
  204. PAINT(1,1),1
  205. WINDOW OUTPUT 2
  206.  
  207. DIM king(87),queen(87),rook(87),bishop(87)
  208. DIM knight(87),pawn(87)
  209. DIM bking(87),bqueen(87),brook(87),bbishop(87)
  210. DIM bknight(87),bpawn(87)
  211.  
  212. rook:
  213. AREA (5,5)
  214. AREA STEP(6,0)
  215. AREA STEP(0,5)
  216. AREA STEP(6,0)
  217. AREA STEP(0,-5)
  218. AREA STEP(6,0)
  219. AREA STEP(0,5)
  220. AREA STEP(6,0)
  221. AREA STEP(0,-5)
  222. AREA STEP(6,0)
  223. AREA STEP(0,10)
  224. AREA STEP(-30,0)
  225. AREA STEP(0,-10)
  226. AREAFILL
  227. PAINT STEP(10,5)
  228. GET (0,0)-(40,20),rook
  229.  
  230. brook:
  231. LINE (430,0)-(470,20),3,bf
  232. AREA (435,5)
  233. AREA STEP(6,0)
  234. AREA STEP(0,5)
  235. AREA STEP(6,0)
  236. AREA STEP(0,-5)
  237. AREA STEP(6,0)
  238. AREA STEP(0,5)
  239. AREA STEP(6,0)
  240. AREA STEP(0,-5)
  241. AREA STEP(6,0)
  242. AREA STEP(0,10)
  243. AREA STEP(-30,0)
  244. AREA STEP(0,-10)
  245. AREAFILL
  246. PAINT STEP(10,5)
  247. GET (430,0)-(470,20),brook
  248.  
  249. bishop:
  250. LINE (0,20)-(40,40),b
  251. LINE STEP(-20,-7.5)-STEP(15,5)
  252. LINE STEP(0,0)-STEP(-30,0)
  253. LINE STEP(0,0)-STEP(15,-5)
  254. LINE STEP(0,0)-STEP(-10,-5)
  255. LINE STEP(0,0)-STEP(10,-5)
  256. LINE STEP(0,0)-STEP(10,5)
  257. LINE STEP(0,0)-STEP(-10,5)
  258. PAINT STEP(0,-5)
  259. PAINT STEP(0,7)
  260. GET (0,20)-(40,40),bishop
  261.  
  262. bbishop:
  263. LINE (430,20)-(470,40),3,bf
  264. LINE STEP(-20,-7.5)-STEP(15,5)
  265. LINE STEP(0,0)-STEP(-30,0)
  266. LINE STEP(0,0)-STEP(15,-5)
  267. LINE STEP(0,0)-STEP(-10,-5)
  268. LINE STEP(0,0)-STEP(10,-5)
  269. LINE STEP(0,0)-STEP(10,5)
  270. LINE STEP(0,0)-STEP(-10,5)
  271. PAINT STEP(0,-5)
  272. PAINT STEP(0,7)
  273. GET (430,20)-(470,40),bbishop
  274.  
  275. queen:
  276. LINE(0,40)-(40,60),b
  277. LINE STEP(-10,-2.5)-STEP(-20,0)
  278. LINE STEP(0,0)-STEP(-5,-10)
  279. LINE STEP(0,0)-STEP(10,2.5)
  280. LINE STEP(0,0)-STEP(5,-7.5)
  281. LINE STEP(0,0)-STEP(5,7.5)
  282. LINE STEP(0,0)-STEP(10,-2.5)
  283. LINE STEP(0,0)-STEP(-5,10)
  284. PAINT STEP(-1,-1)
  285. GET (0,40)-(40,60),queen
  286.  
  287. bqueen:
  288. LINE(430,40)-(470,60),3,bf
  289. LINE STEP(-10,-2.5)-STEP(-20,0)
  290. LINE STEP(0,0)-STEP(-5,-10)
  291. LINE STEP(0,0)-STEP(10,2.5)
  292. LINE STEP(0,0)-STEP(5,-7.5)
  293. LINE STEP(0,0)-STEP(5,7.5)
  294. LINE STEP(0,0)-STEP(10,-2.5)
  295. LINE STEP(0,0)-STEP(-5,10)
  296. PAINT STEP(-1,-1)
  297. GET (430,40)-(470,60),bqueen
  298.  
  299. king:
  300. LINE (0,60)-(40,80),b
  301. LINE STEP(-10,-2.5)-STEP(-20,0)
  302. LINE STEP(0,0)-STEP(-5,-7.5)
  303. LINE STEP(0,0)-STEP(15,-5)
  304. LINE STEP(0,0)-STEP(15,5)
  305. LINE STEP(0,0)-STEP(-5,7.5)
  306. PAINT STEP(-10,-5)
  307. GET (0,60)-(40,80),king
  308.  
  309. bking:
  310. LINE (430,60)-(470,80),3,bf
  311. LINE STEP(-10,-2.5)-STEP(-20,0)
  312. LINE STEP(0,0)-STEP(-5,-7.5)
  313. LINE STEP(0,0)-STEP(15,-5)
  314. LINE STEP(0,0)-STEP(15,5)
  315. LINE STEP(0,0)-STEP(-5,7.5)
  316. PAINT STEP(-10,-5)
  317. GET (430,60)-(470,80),bking
  318.  
  319. knight:
  320. LINE (0,80)-(40,100),b
  321. AREA STEP(-5,-2.5)
  322. AREA STEP(-30,0)
  323. AREA STEP(15,-7.5)
  324. AREA STEP(-10,2.5)
  325. AREA STEP(-5,-5)
  326. AREA STEP(15,-5)
  327. AREAFILL
  328. PAINT STEP(0,5)
  329. GET (0,80)-(40,100),knight
  330.  
  331. bknight:
  332. LINE (430,80)-(470,100),3,bf
  333. AREA STEP(-5,-2.5)
  334. AREA STEP(-30,0)
  335. AREA STEP(15,-7.5)
  336. AREA STEP(-10,2.5)
  337. AREA STEP(-5,-5)
  338. AREA STEP(15,-5)
  339. AREAFILL
  340. PAINT STEP(0,5)
  341. GET (430,80)-(470,100),bknight
  342.  
  343. pawn:
  344. LINE (0,100)-(40,120),b
  345. CIRCLE STEP(-20,-12.5),10,1
  346. LINE STEP(0,4)-STEP(15,5)
  347. LINE STEP(0,0)-STEP(-30,0)
  348. LINE STEP(0,0)-STEP(15,-4)
  349. PAINT STEP(0,-4)
  350. PAINT STEP(0,7)
  351. GET (0,100)-(40,120),pawn
  352.  
  353. bpawn:
  354. LINE (430,100)-(470,120),3,bf
  355. CIRCLE STEP(-20,-12.5),10,1
  356. LINE STEP(0,4)-STEP(15,5)
  357. LINE STEP(0,0)-STEP(-30,0)
  358. LINE STEP(0,0)-STEP(15,-4)
  359. PAINT STEP(0,-4)
  360. PAINT STEP(0,7)
  361. GET (430,100)-(470,120),bpawn
  362. GOTO chessboard
  363.  
  364. newquestion:
  365. no=no+1
  366. GOTO readposition
  367.  
  368. nextmove: 
  369. WINDOW OUTPUT 3
  370. CLS     
  371. PRINT "Question number
  372. PRINT  no
  373. PRINT "What is your move
  374. PRINT 
  375. IF colour$="1" THEN
  376. PRINT  "White to move
  377. END IF
  378. IF colour$="2" THEN
  379. PRINT  "Black to move
  380. END IF
  381. PRINT 
  382. PRINT "(If you are stuck 
  383. PRINT "double click on
  384. PRINT "the a1 square)
  385. IF ms=1 THEN usemouse
  386. INPUT move$ 
  387. IF move$="x" THEN giveup
  388. IF move$=answer$ THEN GOSUB correct :ELSE GOSUB wrong
  389.  
  390. CONTINUE:
  391. IF flag=1 THEN score=score
  392. IF flag=0 THEN score=score+1
  393. flag=0
  394. total=total+1
  395. GOTO score
  396.  
  397. usemouse:
  398. ON MOUSE GOSUB wait1
  399. MOUSE ON
  400.  
  401. wait1:
  402. IF MOUSE(0)>0 THEN readmouse
  403. GOTO wait1
  404.  
  405. readmouse:
  406. move=MOUSE(0)
  407. a=MOUSE(3) : b=MOUSE(4)
  408. x=(a-n1)/n2
  409. y=(n3-b)/n1+1
  410. y=INT(y): x=INT(x)
  411.  
  412. wait2:
  413. IF MOUSE(0)>0 THEN read2
  414. GOTO wait2
  415.  
  416. read2:
  417. move=MOUSE(0)
  418. a=MOUSE(3) : b=MOUSE(4)
  419. x2=(a-n1)/n2
  420. y2=(n3-b)/n1+1
  421. y2=INT(y2): x2=INT(x2)
  422. IF x=1 THEN v$="a"
  423. IF x=2 THEN v$="b"
  424. IF x=3 THEN v$="c"
  425. IF x=4 THEN v$="d"
  426. IF x=5 THEN v$="e"
  427. IF x=6 THEN v$="f"
  428. IF x=7 THEN v$="g"
  429. IF x=8 THEN v$="h"
  430. IF x2=1 THEN w$="a"
  431. IF x2=2 THEN w$="b"
  432. IF x2=3 THEN w$="c"
  433. IF x2=4 THEN w$="d"
  434. IF x2=5 THEN w$="e"
  435. IF x2=6 THEN w$="f"
  436. IF x2=7 THEN w$="g"
  437. IF x2=8 THEN w$="h"
  438.  
  439. PRINT " ";v$;y;"-";w$;y2
  440. IF x=1 AND y=1 AND x2=1 AND y2=1 THEN giveup
  441. IF x=f1 AND y=r1 AND x2=f2 AND y2=r2 THEN correct :ELSE wrong
  442.  
  443. wrong: PRINT "Try again!
  444. flag=1
  445. IF ms=1 THEN usemouse
  446. PRINT "Press Spacebar
  447. PRINT "to continue
  448. INPUT a$
  449. GOTO nextmove
  450.  
  451. giveup:
  452. score=score
  453. total=total+1
  454. flag=0
  455. GOTO score
  456.  
  457. correct: PRINT "  Correct!
  458. IF ms=1 THEN CONTINUE
  459. PRINT "Press Spacebar
  460. PRINT "to continue
  461. INPUT a$
  462. RETURN
  463.  
  464. score: 
  465. WINDOW OUTPUT 4
  466. CLS
  467. PAINT(1,1),1
  468. COLOR 2,1
  469. PRINT 
  470. PRINT " Your score is
  471. PRINT 
  472. PRINT "    ";score
  473. PRINT 
  474. PRINT " From a possible
  475. PRINT 
  476. PRINT "    ";total
  477. IF ms=1 THEN chessboard
  478. INPUT "Press spacebar";a$
  479. GOTO chessboard
  480.  
  481. readposition:
  482. WINDOW OUTPUT 2
  483. IF EOF(1)=-1 THEN fin
  484. INPUT#1,answer$
  485. INPUT#1,position$
  486. IF EOF(1)=-1 THEN fin
  487. d=LEN(position$)
  488. space=space+d
  489. limit=2136
  490. IF space > limit THEN fin
  491. f1$=MID$(answer$,1,1)
  492. r1$=MID$(answer$,2,1)
  493. f2$=MID$(answer$,3,1)
  494. r2$=MID$(answer$,4,1)
  495. colour$=MID$(answer$,5,1)
  496. IF f1$="a" THEN f1=1
  497. IF f1$="b" THEN f1=2
  498. IF f1$="c" THEN f1=3
  499. IF f1$="d" THEN f1=4
  500. IF f1$="e" THEN f1=5
  501. IF f1$="f" THEN f1=6
  502. IF f1$="g" THEN f1=7
  503. IF f1$="h" THEN f1=8
  504. IF f2$="a" THEN f2=1
  505. IF f2$="b" THEN f2=2
  506. IF f2$="c" THEN f2=3
  507. IF f2$="d" THEN f2=4
  508. IF f2$="e" THEN f2=5
  509. IF f2$="f" THEN f2=6
  510. IF f2$="g" THEN f2=7
  511. IF f2$="h" THEN f2=8
  512. r1=VAL(r1$)
  513. r2=VAL(r2$)
  514. b=LEN(position$)
  515. FOR a=1 TO b STEP 4 
  516.  side$=MID$(position$,a,1)
  517.  piece$=MID$(position$,a+1,1)
  518.  file$=MID$(position$,a+2,1)
  519.  rank$=MID$(position$,a+3,1) 
  520.  p=VAL(piece$)
  521.  IF p=0 THEN nextmove
  522.  file=VAL(file$)
  523.  rank=VAL(rank$)
  524.  x=n1+n2*file
  525.  y=n3-n1*rank 
  526.  z=rank+file
  527.  IF z/2=INT(z/2) THEN z=0
  528.  IF NOT z/2=INT(z/2) THEN z=1
  529. IF side$="1" THEN
  530.  IF z=0 THEN  
  531.  IF p=1 THEN PUT(x,y),king,PSET
  532.  IF p=2 THEN PUT(x,y),queen,PSET
  533.  IF p=3 THEN PUT(x,y),rook,PSET
  534.  IF p=4 THEN PUT(x,y),bishop,PSET
  535.  IF p=5 THEN PUT(x,y),knight,PSET
  536.  IF p=6 THEN PUT(x,y),pawn,PSET
  537.  END IF
  538.  IF z=1 THEN 
  539.  IF p=1 THEN PUT(x,y),bking,PSET
  540.  IF p=2 THEN PUT(x,y),bqueen,PSET
  541.  IF p=3 THEN PUT(x,y),brook,PSET
  542.  IF p=4 THEN PUT(x,y),bbishop,PSET
  543.  IF p=5 THEN PUT(x,y),bknight,PSET
  544.  IF p=6 THEN PUT(x,y),bpawn,PSET
  545.  END IF
  546. END IF
  547. IF side$="2" THEN
  548.  IF z=0 THEN
  549.  IF p=1 THEN PUT(x,y),bking,PRESET
  550.  IF p=2 THEN PUT(x,y),bqueen,PRESET
  551.  IF p=3 THEN PUT(x,y),brook,PRESET
  552.  IF p=4 THEN PUT(x,y),bbishop,PRESET
  553.  IF p=5 THEN PUT(x,y),bknight,PRESET
  554.  IF p=6 THEN PUT(x,y),bpawn,PRESET
  555.  END IF
  556.  IF z=1 THEN
  557.  IF p=1 THEN PUT(x,y),king,PRESET
  558.  IF p=2 THEN PUT(x,y),queen,PRESET
  559.  IF p=3 THEN PUT(x,y),rook,PRESET
  560.  IF p=4 THEN PUT(x,y),bishop,PRESET
  561.  IF p=5 THEN PUT(x,y),knight,PRESET
  562.  IF p=6 THEN PUT(x,y),pawn,PRESET
  563.  END IF
  564. END IF
  565. NEXT
  566. LINE(60,5)-(380,5)
  567. LINE(380,5)-(380,165)
  568. LINE(60,5)-(60,165)
  569. LINE(60,165)-(380,165)
  570. GOTO nextmove
  571.  
  572. rating:
  573. PRINT "Your time
  574. PRINT "has run out!
  575. PRINT 
  576.  
  577. score1:
  578. CLS
  579. WINDOW OUTPUT 4
  580. score=INT((score/min)*15*wt)
  581. no=INT((no/min)*15*wt)
  582. PRINT "Your score was 
  583. PRINT "  ";score
  584. PRINT "out of an 
  585. PRINT "attempted ";no
  586. PRINT 
  587. PRINT "CLICK 
  588. PRINT "TO 
  589. PRINT "CONTINUE
  590. PRINT 
  591. GOTO record
  592. RETURN
  593.  
  594. wclose:
  595. SYSTEM
  596. GOTO fin2
  597. RETURN
  598.  
  599. fin:
  600. CLOSE 1
  601. WINDOW OUTPUT 4
  602. CLS
  603. PAINT(1,1),1
  604. COLOR 2,1
  605. PRINT "You have 
  606. PRINT "answered all the
  607. PRINT "questions
  608. GOTO score1
  609.  
  610. record:
  611. PRINT "Record name in
  612. INPUT"hall of fame";a$
  613. IF a$="n" THEN fin1
  614. IF a$="y" THEN record1
  615. PRINT "Answer with y or n
  616. GOTO record
  617.  
  618. record1:
  619. DIM ts(20),n$(20)
  620. IF nam$="checkmate1" THEN sect=1
  621. IF nam$="mate2a" THEN sect=2
  622. IF nam$="mate2b" THEN sect=3
  623. IF nam$="mate3a" THEN sect=4
  624. IF nam$="mate3b" THEN sect=5
  625. IF nam$="unstop2" THEN sect=6
  626. IF nam$="unstop3" THEN sect=7
  627. IF nam$="winmaterial2" THEN sect=8
  628. IF nam$="hennig" THEN sect=9
  629. IF nam$="winmaterial3a" THEN sect=10
  630. IF nam$="winmaterial3b" THEN sect=11
  631. IF nam$="queening2" THEN sect=12
  632. IF nam$="queening3" THEN sect=13
  633. IF nam$="4movera" THEN sect=14
  634. IF nam$="4moverb" THEN sect=15
  635. IF nam$="draw" THEN sect=16
  636. IF nam$="1mover" THEN sect=17
  637.  
  638. fame:
  639. CLOSE
  640. OPEN "hall" FOR INPUT AS 1
  641. readhall:
  642. FOR x=1 TO 17
  643. INPUT#1,ts(x)
  644. INPUT#1,n$(x)
  645. NEXT
  646. CLOSE
  647.  
  648. onehall:
  649. IF score>ts(sect) THEN
  650. INPUT"Your name";na$
  651. n$(sect)=na$
  652. ts(sect)=score
  653. OPEN "hall" FOR OUTPUT AS 1
  654. FOR x=1 TO 17
  655. PRINT #1,ts(x)
  656. PRINT #1,n$(x)
  657. NEXT
  658. CLOSE 1
  659. END IF
  660.  
  661. WINDOW 5,"fame",(150,20)-(450,180),16
  662. PALETTE 3, 0.7,0.7, 0
  663. PAINT(1,1),3
  664. COLOR 2,3
  665. PRINT 
  666. PRINT "      HALL OF FAME
  667. PRINT " checkmate1   ";ts(1);n$(1) 
  668. PRINT " checkmate2a  ";ts(2);n$(2) 
  669. PRINT " checkmate2b  ";ts(3);n$(3)
  670. PRINT " checkmate3a  ";ts(4);n$(4)
  671. PRINT " checkmate3b  ";ts(5);n$(5) 
  672. PRINT " unstop2      ";ts(6);n$(6)
  673. PRINT " unstop3      ";ts(7);n$(7)
  674. PRINT " winmaterial2a";ts(8);n$(8) 
  675. PRINT " winmaterial2b";ts(9);n$(9)
  676. PRINT " winmaterial3a";ts(10);n$(10)
  677. PRINT " winmaterial3b";ts(11);n$(11) 
  678. PRINT " queening2    ";ts(12);n$(12) 
  679. PRINT " queening3    ";ts(13);n$(13)
  680. PRINT " mate4a       ";ts(14);n$(14)
  681. PRINT " mate4b       ";ts(15);n$(15)
  682. PRINT " draw         ";ts(16);n$(16)
  683. PRINT " 1mover        ";ts(17);n$(17)
  684. INPUT"Return key";a$
  685. GOTO fin1
  686.  
  687. fin1:
  688. RUN "chesstutor"
  689.  
  690. break1:
  691. RETURN
  692.  
  693. fin2:
  694. SYSTEM
  695.  
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.  
  703.  
  704.  
  705.  
  706.  
  707.  
  708.  
  709.